package 动态数组;

public class Person <Person> {
    private int age;
    private String name;

    // person的含参的构造函数，new对象的时候输入的参数是（int，String）
    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public int getAge(){
        return this.age;
    }

    // 需要生成toString函数，不然打印出来的结果就是：[动态数组.Person@14ae5a5]

    @Override
    public String toString() {
        return "[name :"+ name + ",age:"+age+"]";
    }

    /* finalize方法想当于c++中的析构函数，用来回收内存，在销毁一个内存的时候，jvm并不会马上回收那个内存，而是等内存不够用了才慢慢检查回收，
     *   所以就需要这个函数提醒他回收。 */
    @Override
    protected void finalize() throws Throwable {
        super.finalize();
        System.out.println("内存回收成功，没用的内存已被回收！");
    }

    /* 重写equals方法，使person这个数据类型在用equals比较的时候，不用去比较内存地址 */

//    @Override
//    public boolean equals(Object obj) {
//        Person person = (Person) obj;
//        return this.age == person.age;
//    }

}
